package main

import "fmt"

//算法解析 相当于没给a,b交换位置，b变成a+b的值
// 1, 1, 2, 3, 5, 8, 13
//    a, b
//       a, b
func fib() func() int {
	a, b := 0, 1
	return func() int {
		a, b = b, a+b
		return a
	}
}

// 斐波那契数列练习 前两个数是1，以后的数都是前两个数的和
func main() {
	f := fib()
	fmt.Println(f()) // 1
	fmt.Println(f()) // 1
	fmt.Println(f()) // 2
	fmt.Println(f()) // 3
	fmt.Println(f()) // 5
	fmt.Println(f()) // 8
	fmt.Println(f()) // 13
	fmt.Println(f()) // 21
}
